從已確認的需求出發,理解限制、討論取捨,並驗證結果。
昨天透過訂單與庫存服務的例子,談到「重新處理」按鈕背後,其實是營運人員希望能查明異常結果,並自行接續處理。今天把這個例子往下延伸。使用一段時間後,營運人員又提出:「一筆一筆按還是有點慢,可以加個批次勾選嗎?」
在這個例子裡,BA已經將需求整理進SRS:支援批次勾選與全選、送出後畫面可以繼續操作、顯示逐筆處理結果,而且單筆再次失敗不能中斷其他筆的處理。全選範圍、可操作狀態與失敗提示,也都有定義。結果仍待確認的訂單,則依既有規則處理,不能因為被勾選就直接再扣一次庫存。
使用者口中的「快一點」,已經透過需求分析,變成團隊確認過的操作方式與預期結果。接手開發後,我們需要理解這些條件,再對照現有流程,確認要如何實現。
畫面不卡住,後端仍然需要處理時間
批次操作沿用單筆處理的條件,對允許補送的訂單呼叫庫存服務,再依結果更新狀態。即使提交後畫面就能繼續操作,背後的一兩百筆工作仍然需要時間與資源。
逐筆等待,整批完成時間會拉長;增加同時處理的筆數,則需要考慮庫存服務的容量。尤其服務剛恢復時,可能正好有大量異常訂單需要處理,新的訂單也還在進來,兩邊都會使用同一套庫存服務。
批次補送與正常訂單一起進來時,系統能否同時滿足原本的服務要求與這次的需求?
把實作限制帶回工作情境
假設進一步檢查與量測後,發現庫存服務在尖峰時段的處理速度有限。為了不影響正常訂單的運作,團隊評估限制批次處理的速率,遇到大量積壓時先排隊。
排隊是否可以接受,要回到營運流程判斷。如果營運人員只需要一次送出、稍後確認結果,這個做法可能足夠;如果這批訂單必須趕在某個作業截止時間前完成,就要進一步評估容量與排程。
討論時,開發者可以整理常見積壓量、尖峰時的正常流量、庫存服務可承受的速率,以及對應測試條件下的完成時間。這些資料能幫助團隊判斷方案是否足夠,或需要調整資源與交付範圍。
SRS已寫明的完成時間與服務要求,就是判斷的依據。若量測顯示達不到,就具體說明落差;需要新增或調整的條件,則由團隊確認後更新文件。
AI協作也需要這些判斷依據
現在的AI不只能依照SRS寫程式,也可以讀取整個專案、架構文件與事先整理好的Markdown,協助追查批次處理會經過哪些流程。如果再提供監控、壓力測試與實際流量資料,它也能參與影響分析、比較方案,並整理測試情境。
因此,問題不在於AI只能照著文件寫,或一定想不到批次處理會排擠正常訂單。當背景與任務範圍足夠完整時,它很可能可以找出這些影響。
但分析結果仍然要回到實際資料驗證。從程式碼看出正常訂單和批次補送共用庫存服務,不代表已經知道系統能承受多少流量;壓力測試顯示目前可以承受,也不代表這項成本與風險就是團隊願意接受的。
開發者仍需要理解這些條件之間的關係,確認AI使用了哪些資料、做了哪些假設,以及證據是否足以支持交付。例如,增加同時處理的數量,可能縮短單批時間,也可能排擠正常訂單;最後要採用哪個方案,仍要依實際服務目標與團隊的取捨決定。
昨天談的是理解功能想改善什麼。今天再往前一步:
讀懂規格承諾的行為,核對現有系統的能力,並用實際情境驗證。
工程師的核心價值,早已不再只是把規格翻譯成Code,而是審視AI或團隊分析時採用的數據與假設是否合理,並拿出足夠的技術證據來支持系統的交付。
下班買了杯咖啡回家,本來想說邊喝邊寫,應該很快就能把文章收尾。
結果改兩段、刪三段,再滑個手機,回頭看杯子,冰塊都快融完了,咖啡還剩大半杯。
想說放著也是放著,乾脆拿起來一口shot掉。
朋友剛好傳訊息:「第三天寫完沒?」
我:「阿,咖啡喝完了」
![]()